#!/usr/bin/env bash

# 应用历史记录，在使用之前运行
apply_history()
{
    # 设置历史记录文件
    if [[ ! -z $COMMAND_NAME ]]; then
        export HISTFILE="$HISTORY_TMP_DIR/${COMMAND_NAME}_history"
    else
        export HISTFILE="$CMD_MAIN_HISTORY_FILE"
    fi
	# 不忽略任何信息
	export HISTIGNORE=*
	# 开启系统历史记录功能
	set -o history
    return 0
}

# 记录历史记录
record_history()
{
    [[ -d $HISTORY_TMP_DIR ]] || mkdir -p $HISTORY_TMP_DIR
    [[ -z "$*" ]] && return 0
    if [[ -z $COMMAND_NAME ]]; then
        echo "$*" >>$CMD_MAIN_HISTORY_FILE
    else
        echo "$*" >>$HISTORY_TMP_DIR/${COMMAND_NAME}_history  
    fi
}

# 历史记录的其他操作
history_exec()
{
    [[ -z $CMD_MAIN_HISTORY_FILE ]] && return 0
    # 设置历史记录文件
	HISTFILE="$CMD_MAIN_HISTORY_FILE"
	# 不忽略任何信息
	HISTIGNORE=*
	# 开启系统历史记录功能
	set -o history
    history $*
    [[ "$1" == "-c" ]] && rm -rf $HISTORY_TMP_DIR
    return 0
}

module_init()
{
    # 设置环境变量
    export HISTORY_TMP_DIR="$HOME/.bash_console_history"
    export CMD_MAIN_HISTORY_FILE="$HISTORY_TMP_DIR/history"

    sysOS=`uname -s`
    if [ $sysOS == "Darwin"  ];then
    	echo " "
    elif [ $sysOS == "Linux"  ];then
        # 绑定键盘上、下按键为向上、向下搜索历史记录。
    	bind '"\e[A": history-search-backward' &>/dev/null
		bind '"\e[B": history-search-forward' &>/dev/null
		# bind '"\C-c": backward-kill-line' &>/dev/null
    else
        echo " "
    fi
    
    debug_echo "History module is ok!"
}

module_exit()
{
    unset CMD_MAIN_HISTORY_FILE
    unset HISTORY_TMP_DIR
    debug_echo "History module exited!"
}